package zhh.tangbao.user.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import zhh.tangbao.user.dto.ModuleQueryDto;
import zhh.tangbao.user.entity.AuthorityOperate;
import zhh.tangbao.user.vo.ModuleInfoVo;
import zhh.tangbao.user.vo.ModuleOptionVo;

import java.util.List;

/**
 * <p>
 * 描述
 * </p>
 *
 * @author 粥灰灰
 * <p>2023/4/5</p>
 */

@Mapper
public interface OperateDao extends BaseMapper<AuthorityOperate> {

    /**
     * roleId和module必须有其中一个不为空
     *
     * @param roleId 如果为空代表查询该模块的全部操作权限
     * @param module 模块code，若为空则代表查询该角色的全部操作权限
     */
    List<AuthorityOperate> listOperateByRoleIdAndAuthorityCode(@Param("roleId") String roleId, @Param("operateModule") String module);

    List<ModuleOptionVo> getModuleOption(ModuleQueryDto dto);

    @Select("SELECT authority_name name, authority_code moduleCode, authority_describe description FROM authority WHERE authority_code = #{moduleCode} ")
    ModuleInfoVo getModuleInfo(ModuleQueryDto dto);

    int deleteRoleOperate(@Param("ids") List<String> ids);

    int deleteRoleOperateRelation(@Param("roleId") String roleId);

    int insertRoleOperateRelation(@Param("roleId") String roleId, @Param("o") List<String> operates);
}
